package com.huijie.app.u.service;

import com.huijie.app.u.entity.Token;
import com.huijie.core.common.IBaseService;
import io.jsonwebtoken.SignatureAlgorithm;

import javax.servlet.http.HttpServletRequest;

/**
 * <p>
 * Token表 服务类
 * </p>
 *
 * @author echen
 * @since 2019-01-09
 */
public interface ITokenService extends IBaseService<Token> {

    /**
     *
     * @param request 请求
     * @param id 令牌ID
     * @param subject 用户ID
     * @param issuer 签发人
     * @param period 有效时间(毫秒)
     * @param roles 访问主张-角色
     * @param permissions 访问主张-权限
     * @param algorithm 加密算法
     * @param userId 用户id
     * @param userType 用户类型
     * @return json web token
     */
    public String issueJwt(HttpServletRequest request, String id, String subject, String issuer, Long period, String roles
            , String permissions, SignatureAlgorithm algorithm, Integer userId, int userType);

    /**
     *插入
     */
    public boolean create(Token token);


    /**
     *更新
     */
    public boolean modify(Token token);

    /**
     * @param token
     * @return boolean
     * @description: 同步更新令牌信息Service
     * @author zyc
     * @date 2018/12/21 10:05
     */
    public boolean modifySync(Token token);

    /**
     *物理删除
     */
    public boolean deleteHard(Token token);


    /**
     *查询
     */
    public Token getTokenByTokenId(String tokenId);
}
